package com.shycloud.mido.common.core.util;

import com.shycloud.mido.common.core.constant.CommonConstants;
import com.shycloud.mido.common.core.constant.enums.OnlineCourseEnum;
import lombok.*;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 响应信息主体
 *
 * @param <T>
 * @author npc
 */
@Builder
@ToString
@Accessors(chain = true)
@AllArgsConstructor
public class R<T> implements Serializable {
	private static final long serialVersionUID = 1L;

	@Getter
	@Setter
	private int code = CommonConstants.SUCCESS;

	@Getter
	@Setter
	private String msg = "success";


	@Getter
	@Setter
	private T data;

	public R() {
		super();
	}

	public R(T data) {
		super();
		if (data instanceof OnlineCourseEnum) {
			this.code = ((OnlineCourseEnum)data).getCode();
			this.msg = ((OnlineCourseEnum)data).getDesc();
		} else {
			this.data = data;
		}
	}

	public R(T data, String msg) {
		super();
		this.data = data;
		this.msg = msg;
	}

	public R(Throwable e) {
		super();
		this.code = CommonConstants.FAIL;
		this.msg = e.getMessage();
	}

	public R(T data, OnlineCourseEnum enumInstance) {
		super();
		this.data = data;
		this.code = enumInstance.getCode();
		this.msg = enumInstance.getDesc();
	}

}
